# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示问题

name = ['谭火', '孙庄', '卢黄', '余钗', '程欢', '杨婵']
chinese = np.random.randint(20, 90, 6)
math = np.random.randint(20, 90, 6)
data = pd.DataFrame({'name': name, 'chinese': chinese, 'math': math})

bar_width = 0.4
plt.figure('Demo')  # 设置窗口标题
plt.xlabel('姓名', fontsize=14)  # x轴标题
plt.ylabel('分数', fontsize=14)  # y轴标题
plt.title('成绩柱状图', fontsize=16)  # 图表标题
plt.bar(data.index, data.chinese, width=bar_width)
plt.bar(data.index+bar_width, data.math, width=bar_width)
plt.xticks(np.arange(6)+bar_width/2, data.name)  # x轴刻度
plt.ylim(0, 100)  # y轴坐标范围
plt.legend(('语文', '数学'))  # 图例
for x, y in zip(data.index, data.chinese):  # 数据点添加文本标签
    plt.text(x, y+2, y, ha='center')
for x, y in zip(data.index, data.math):  # 数据点添加文本标签
    plt.text(x+bar_width, y+2, y, ha='center')
plt.show()